package design_pattern.FutureMode;

/**
 * @Author: 蔡翔
 * @Date: 2020/3/14 20:37
 * @Version 1.0
 */
public class test {
    public static void main(String[] args) throws InterruptedException {
        AsyncFuture<Integer> asyncFuture = new AsyncFuture<>();


        new Thread(()->{
            System.out.println("comeing get() Thread");
            try {
                //如果在外部调用 get() 方法，那么它里面的wait()方法 会把整个main()线程 给阻塞住，
                // 这样导致 后面的Thread  new 不出来，导致这个wait()无法被notify
                System.out.println(asyncFuture.get());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();

        Thread.sleep(100);
        new Thread(()->{
            System.out.println("comeing done Thread");
            asyncFuture.done(11);
        }).start();
    }
}
